﻿using UnityEngine;
using System.Collections;

public class CharacterController : MonoBehaviour
{
    public float playerSpeed;
    public float playerJumpHeight;
	private bool isJumping;

    // Use this for initialization
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {
        float Horizontal = Input.GetAxis("Horizontal");
        float Vertical = Input.GetAxis("Vertical");

        Vector3 Movement = new Vector3(Horizontal, 0f, Vertical) * Time.deltaTime;
        rigidbody.position += Movement * playerSpeed;

        if (Input.GetButtonDown("Jump") && isJumping == false)
        {
			isJumping = true;
            rigidbody.velocity = new Vector3(0, playerJumpHeight, 0);
        }

    }

    void FixedUpdate()
    {
        // Generate a plane that intersects the transform's position with an upwards normal.
        Plane playerPlane = new Plane(Vector3.up, transform.position);

        // Generate a ray from the cursor position
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

        // Determine the point where the cursor ray intersects the plane.
        // This will be the point that the object must look towards to be looking at the mouse.
        // Raycasting to a Plane object only gives us a distance, so we'll have to take the distance,
        //   then find the point along that ray that meets that distance.  This will be the point
        //   to look at.
        float hitdist = 0.0f;
        // If the ray is parallel to the plane, Raycast will return false.
        if (playerPlane.Raycast(ray, out hitdist))
        {
            // Get the point along the ray that hits the calculated distance.
            Vector3 targetPoint = ray.GetPoint(hitdist);

            // Determine the target rotation.  This is the rotation if the rigidbody looks at the target point.
            Quaternion targetRotation = Quaternion.LookRotation(targetPoint - rigidbody.position);

            // Smoothly rotate towards the target point.
            rigidbody.rotation = Quaternion.Slerp(rigidbody.rotation, targetRotation, 10 * Time.deltaTime);
        }
    }

	void OnTriggerEnter(Collider other) 
	{
		if (other.gameObject.tag == "Ground") {
			print("hit ground");
			isJumping = false;
		}

	}
}